//1.array 数组是一组数据有序的集合,通过下标访问，下标从0开始
//2.数组当中可以存储任意数据类型的值
//3.数组中每个数据之间通过逗号隔开
//4.数组中的数据称为元素，每一个元素都有唯一的下标

// let arr = [1, 2, 3, 'abc', true, undefined, null, {}];
// console.log(arr[0]);
// console.log(arr[3]);

//---- 创建数组
// 1.字面量
// let arr = [];
// 2.构造函数
//如果一次传入的是多个值，则作为数组的元素，如果只传了一个数字则是数组的长度
// let arr = new Array(1, 2, 3, 4, 5);
// console.log(arr);//[1,2,3,4,5]
// console.log(arr.length);//5
// arr.length = 0;//把长度赋值成0可以清空数组
// console.log(arr);//[]
// let arr2 = new Array(3);
// console.log(arr2);
// console.log(arr2.length);


// let arr=[];
// arr.length=5;
// console.log(arr);//[ <5 empty items> ]
// console.log(arr[1]);//undefined

//---- 查看数据类型
// console.log(typeof arr);//object

//简单值是直接把数据存储在栈当中，而复杂值是把数据存储在堆当中，栈当中存的是引用地址，
//指向数据在堆中存放的位置
// let arr1=[1,2,3],arr2=[1,2,3];
// let arr3=arr1;//把arr1的引用地址赋值给arr3,它们指向堆当中同一个数据
// arr3[1]='a';
// console.log(arr1);//[1,'a',3]
// console.log(arr3);//[ 1, 'a', 3 ]

// console.log(arr1==arr2);//false 引用地址不同
// console.log(arr1==arr3);//true 引用相同

//---- 删除某一项元素
//delete 只删除值，不改变长度
// let arr=['1',1,'abc',true];
// delete arr[2];
// console.log(arr[2]);//undefined
// console.log(arr.length);//4


//----- 遍历数组
//1.for 遍历下标
// let arr = [1, 2, 3, 4, 5, 6];
// for (let i = 0; i <arr.length;i++){
//     // console.log(i);
//     console.log(arr[i]);
// }

// 练习：找出数组当中大于3000的数；
// let arr = [2999, 20000, 30213, 4005, -3000, 3001];
// for (let i = 0; i < arr.length; i++) {
//     if (arr[i] > 3000) {
//         console.log(arr[i]);
//     }
// }
// console.log('========');
//2.for... of  遍历元素
// for (let item of arr) {
//     console.log(item);
// }

//3.for...in 遍历下标
// for (let index in arr) {
//     console.log(index);
//     console.log(arr[index]);
// }

// console.log('=============');
// //4.forEach()
// arr.forEach(function(item,index,arr){
//     console.log(item,index,arr);
// })

//执行效率：for>for of>forEach()>for in

//map() some() filter() every()


// 练习：1.计算数组[2,5,3,7,8,10]的和与平均值
let arr = [-2, -5, -3, -7, -8, -10];
// let sum = 0, avg = 0;
// for(let i=0;i<arr.length;i++){
//     sum+=arr[i]
// }

// for(let item of arr){
//     sum+=item;
// }

// for(let index in arr){
//     sum+=arr[index]
// }

// arr.forEach(function (item, index) {
//     // sum += item;
//     sum += arr[index]
// })

// avg = sum / arr.length;
// console.log(sum, avg);

// 2.找出数组[2, 5, 3, 7, 8, 10]中的最大值和最小值
// let max = arr[0], min = arr[0];
// for (let i = 0; i < arr.length; i++) {
// if (arr[i] > max) {
//     max = arr[i];
// }
//     if (arr[i] < min) {
//         min = arr[i];
//     }
// }
// console.log(max,min);

// 3.数组转字符串
// let arr1 = ['javascript', '是', '一门', '弱类型', '的', '编程语言'];
// let str = '';
// for (let item of arr1) {
//     str +=item
// }
// console.log(str);